名前のプレフィックスで一致したEventBridgeルールをまとめて無効化/有効化してみた
マネージメントコンソールからポチポチするのはめんどくさい
こんにちは、のんピ(@non____97)です。
皆さんはEventBridgeルールをまとめて無効化/有効化したいなと思ったことはありますか? 私はあります。
2022/1/31現在、マネージメントコンソールから複数のEventBridgeルールをまとめて無効化/有効化することはできません。
そのため、大量のEventBridgeルールを一気に無効化/有効化する際は、かなりの回数マネージメントコンソールからポチポチする必要があり、非常に面倒です。
そこで、今回はAWS CLIを使って、EventBridgeルールのプレフィックスで一致したものをまとめて無効化/有効化してみます。
コマンド
方法はとてもシンプルです。list-rulesで無効化/有効化したいEventBridgeルールの名前のプレフィックスを指定し、disable-ruleやenable-ruleを実行して、EventBridgeルールのステータスを切り替えます。
無効化/有効化のそれぞれのコマンドは以下の通りです。
aws events list-rules \ --name-prefix <The prefix matching the rule name> \ | jq '.Rules[].Name' \ | xargs -I {} -P 20 \ aws events disable-rule --name "{}"
aws events list-rules \ --name-prefix <The prefix matching the rule name> \ | jq '.Rules[].Name' \ | xargs -I {} -P 20 \ aws events enable-rule --name "{}"
xargs
を使うことで、EventBridgeルールの無効化/有効化を並列で行うことができます。今回は-P 20
とし、最大20多重で動作するようにしています。
やってみた
それでは実際にやってみます。
まず、StateMachineTest001-
から始まる複数のEventBridgeルールを無効化します。
それではコマンドを実行して、StateMachineTest001-
から始まる複数のEventBridgeルールを無効化します。
[cloudshell-user@ip-10-0-159-240 ~]$ aws events list-rules \ > --name-prefix StateMachineTest001- \ > | jq '.Rules[].Name' \ > | xargs -I {} -P 20 \ > aws events disable-rule --name "{}" [cloudshell-user@ip-10-0-159-240 ~]$
コマンドを実行しても特に出力はありませんでした。
マネージメントコンソールを確認すると、StateMachineTest001-
から始まる複数のEventBridgeルールがDisabled
になっていました。
それでは、無効化したEventBridgeルールを有効化します。
[cloudshell-user@ip-10-0-159-240 ~]$ aws events list-rules \ > --name-prefix StateMachineTest001- \ > | jq '.Rules[].Name' \ > | xargs -I {} -P 20 \ > aws events enable-rule --name "{}" [cloudshell-user@ip-10-0-159-240 ~]$
マネージメントコンソールを確認すると、StateMachineTest001-
から始まる複数のEventBridgeルールがEnabled
になっていました。
面倒なことはCLIで
プレフィックスで一致したEventBridgeルールをまとめて無効化/有効化してみました。
特に、CloudFormationでEventBridgeルールを作成すると、ルール名のプレフィックスにスタック名が付くので、CloudFormationで作成されたEventBridgeルールをまとめて無効化/有効化したいときに便利かなと思います。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!